home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / PAS_0493 / UINPUT.PAS < prev    next >
Pascal/Delphi Source File  |  1993-04-15  |  2KB  |  47 lines

  1. {─ Fido Pascal Conference ────────────────────────────────────────────── PASCAL ─
  2. Msg  : 117 of 150
  3. From : Sean Palmer                         1:104/123.0          08 Apr 93  15:36
  4. To   : All
  5. Subj : G:uInput unit
  6. ────────────────────────────────────────────────────────────────────────────────}
  7. {uInput}
  8. {Copyright (C)1993 Sean Palmer}
  9.    {^ This is just to cover my butt so none of you
  10.       copyright it and sue me for using my own stuff!}
  11.  {2237 Lincoln St.}
  12.  {Longmont, CO 80501}
  13. {Alms gladly accepted! 8) }
  14. {This unit has been released to the public domain}
  15.  
  16. unit uInput;
  17. {$B-,I-,N-,O-,R-,S-,V-,X-}
  18. interface
  19.  
  20. uses keys;
  21. {tCharSet is used to specify function keys to the input routine}
  22. type tCharSet=set of char;
  23.  
  24. function input(default:string;maxCh:byte;cs:tCharSet):string;
  25.  
  26. implementation
  27.  
  28. function input(default:string;maxCh:byte;cs:tCharSet):string;
  29.   var c:char; s:string[255]; p:byte absolute s; const bs=^H' '^H;
  30. begin
  31.  s:=default; write(default);
  32.  repeat
  33.   c:=readKey; if c=#0 then c:=char(byte(readKey)or $80);
  34.   case c of
  35.    ^H:if p<>0 then begin write(bs); dec(p);end;
  36.    #127:while p>0 do begin write(bs); dec(p);end;    
  37.    ^M:; {don't beep}    
  38.    ' '..'~':if length(s)<maxCh then begin write(c);inc(p);s[p]:=c; end        
  39.             else write(^G);    
  40.    else if c in cs then begin s[1]:=c; p:=255; c:=^M; end         
  41.         else write(^G);
  42.    end;
  43.   until (c=^M)or(c=^[);
  44.  if c=^[ then input:=default else input:=s;
  45.  end;
  46.  
  47. end.